#导入会话，关联查询工具
from sqlalchemy.orm import Session,joinedload
#到入自定义的ORM模型
from day20.models.models_stu import Stu
from day20.schema.schema_stu import StuCreateSchema,StuUpdateSchema
from fastapi import HTTPException

#学生信息的创建
def stu_create(db:Session,stu_schema: StuCreateSchema):
    db_stu=Stu(**stu_schema.dict())
    db.add(db_stu)
    db.commit()
    db.refresh(db_stu)
    return db_stu

# 查询所有学生信息
def stu_get_all(db:Session):
    return  db.query(Stu).all()

#查询学生信息（编号查询）
def stu_get_id(db:Session,id:int):
   return db.query(Stu).filter(Stu.stu_id==id).first()

#查询学生信息（按姓名查）
def stu_get_name(db:Session,name:str):
    return db.query(Stu).filter(Stu.stu_name==name).all()

#查询学生信息（按班级查选）
def stu_get_class(db:Session,Class:str):
    return db.query(Stu).filter(Stu.class_name==Class).all()

#更新学生信息(先根据学生id检索出学生，再去修改)
def stu_update(db:Session,stuid :int ,stu_update_student: StuUpdateSchema):

    db_student=stu_get_id(db,stuid)

    if not db_student :
        raise HTTPException(status_code=404, detail=f"学生ID {stuid} 不存在")
    update_data = stu_update_student.dict(exclude_unset=True)
    for key,value in update_data.items():
        setattr(db_student,key,value)

    db.commit()
    db.refresh(db_student)
    return db_student